package com.example.util;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;

/**
 * @author AaronF
 * json字符串工具类，提供将对象转换为json字符串的方法
 */
public class JsonUtils {
    private static final ObjectMapper mapper = new ObjectMapper();

    static {
        //禁用时间戳
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }

    /**
     * 解析json字符串
     * @param jsonStr
     * @return
     */
    public static <T> T resolveJson(String jsonStr,Class<T> tClass){
        return JSONObject.parseObject(jsonStr,tClass);
    }


    /**
     * 下面两个方式是将目标对象转换为Json字符串
     *
     * @param obj 目标对象
     * @param sdf 日期格式
     * @return 目标对象的Json字符串
     */
    public static String getJson(Object obj, String sdf) {
        //自定义时间格式
        mapper.setDateFormat(new SimpleDateFormat(sdf));
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String getJson(Object obj) {
        return getJson(obj, "yyyy-MM-dd HH:mm:ss");
    }

}